package com.util;

import java.nio.ByteBuffer;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class h34Unit {
    public static void h34(byte[] hash, byte[] message, int mlen, int index, int flag)  {
        try {
            // 获取 SHA-256 的 MessageDigest 实例
            MessageDigest sha256 = MessageDigest.getInstance("SHA-256");

            // 处理 flag，将 flag 转换为字节并更新到 SHA-256 实例
            sha256.update((byte) flag);

            // 将整数 index 转换为字节数组，并更新到 SHA-256 实例
            ByteBuffer buffer = ByteBuffer.allocate(4);
            buffer.putInt(index);
            byte[] cI = buffer.array();
            sha256.update(cI);

            // 处理 message，将 message 的每个字节更新到 SHA-256 实例
            for (int i = 0; i < mlen; i++) {
                sha256.update(message[i]);
            }

            // 计算最终的哈希值
            byte[] result = sha256.digest();
            // 将计算结果复制到 hash 缓冲区
            System.arraycopy(result, 0, hash, 0, result.length);
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
    }
}
